Timer এবং Quartz Component ব্যবহার

Latest Technologies - অ্যাপাচি ক্যামেল (Apache  Camel) - Scheduling এবং Timer | NCTB BOOK

Apache Camel-এ Timer এবং Quartz কম্পোনেন্টগুলি সময়-ভিত্তিক প্রসেসিং এবং কার্যক্রমের জন্য ব্যবহৃত হয়। এগুলি সময় নির্ধারণ করে মেসেজ পাঠানো এবং শিডিউল করা সহজ করে।

১. Timer Component

Timer Component একটি সহজ এবং হালকা উপায় যা নির্দিষ্ট সময় অন্তর অন্তর মেসেজ উৎপন্ন করতে ব্যবহৃত হয়। এটি সাধারণত পরীক্ষার জন্য এবং দ্রুত ব্যবহারের জন্য উপযুক্ত।

Timer Component এর উদাহরণ

import org.apache.camel.builder.RouteBuilder;

public class TimerRoute extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("timer:myTimer?period=5000") // প্রতি 5 সেকেন্ডে একটি মেসেজ উৎপন্ন হবে
            .setBody(simple("Current time: ${header.firedTime}"))
            .to("log:timerOutput"); // লগ করা
    }
}

২. Quartz Component

Quartz Component হল একটি শক্তিশালী সময় নির্ধারণকারী যা জটিল শিডিউলিংয়ের জন্য ব্যবহার করা হয়। এটি cron-like শিডিউলিং এর মাধ্যমে কার্যক্রম সম্পাদন করতে সক্ষম।

Quartz Component এর উদাহরণ

import org.apache.camel.builder.RouteBuilder;

public class QuartzRoute extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("quartz://myTimer?cron=0/5+*+*+*+*+?") // প্রতি 5 সেকেন্ডে কার্যকর হবে
            .setBody(simple("Quartz timer fired at: ${header.firedTime}"))
            .to("log:quartzOutput"); // লগ করা
    }
}

সম্পূর্ণ উদাহরণ

নিচে একটি সম্পূর্ণ উদাহরণ দেওয়া হলো যেখানে Timer এবং Quartz দুটোই ব্যবহার করা হয়েছে:

import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.builder.RouteBuilder;

public class MainApp {
    public static void main(String[] args) throws Exception {
        CamelContext camelContext = new DefaultCamelContext();

        // Timer এবং Quartz রাউট যুক্ত করা
        camelContext.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                // Timer Route
                from("timer:myTimer?period=5000")
                    .setBody(simple("Timer fired at: ${header.firedTime}"))
                    .to("log:timerOutput");

                // Quartz Route
                from("quartz://myTimer?cron=0/10+*+*+*+*+?")
                    .setBody(simple("Quartz timer fired at: ${header.firedTime}"))
                    .to("log:quartzOutput");
            }
        });

        // Start the Camel context
        camelContext.start();

        // Keep running for some time
        Thread.sleep(60000); // Run for 1 minute

        // Stop the Camel context
        camelContext.stop();
    }
}

উপসংহার

Apache Camel-এ Timer এবং Quartz কম্পোনেন্টগুলি সময় নির্ধারণের জন্য অত্যন্ত কার্যকরী। Timer Component সাধারণ সময় নির্ধারণের জন্য ব্যবহার করা হয়, যেখানে Quartz Component জটিল এবং কাস্টমাইজড শিডিউলিংয়ের জন্য ব্যবহৃত হয়। এই কম্পোনেন্টগুলি আপনাকে নির্দিষ্ট সময়ের মধ্যে কার্যক্রম সম্পাদন করতে সক্ষম করে, যা বিভিন্ন ইন্টিগ্রেশন সিস্টেমে অত্যন্ত উপকারী।

Promotion